package com.aterrizar.dominio.reservacion.viajes;

import java.util.ArrayList;
import java.util.List;
import org.joda.time.Interval;

public class Vuelo {
	
	private Integer id;
	
	private List<Tramo> tramos;
	
	private Aerolinea aerolinea;
	
	private Integer escalas;
	
	private Long duracion;
	
	public Integer getId() {
		return id;
	}

	@SuppressWarnings("unused")
	private void setId(Integer id) {
		this.id = id;
	}

	public List<Tramo> getTramos() {
		return tramos;
	}
	
	public void setTramos(List<Tramo> tramos) {
		this.tramos = tramos;
	}

	public Aerolinea getAerolinea() {
		return aerolinea;
	}

	public void setAerolinea(Aerolinea aerolinea) {
		this.aerolinea = aerolinea;
	}

	public void agregarTodosLosTramos(List<Tramo> t){
		this.setTramos(t);
		this.setEscalas(this.getTramos().size());
		this.setDuracion(this.duracion());
	}
	
	
//	public DateTime menorFecha(){
//		DateTime t1 = this.tramos.get(0).getSalida();
//		for(Tramo t : this.tramos){
//			if(t1.compareTo(t.getSalida()) < 0){
//				t1 = t.getSalida();
//			}
//			
//		}
//		return t1;	
//	}
//		
//	public DateTime mayorFecha(){
//		DateTime t1 = this.tramos.get(0).getLlegada();
//		for(Tramo t : this.tramos){
//			if(t1.compareTo(t.getLlegada()) > 0){
//				t1 = t.getLlegada();
//			}
//			
//		}
//		return t1;	
//	}		
	
	public Long duracion(){
		Long l = (long) 0;
		for(Tramo t : this.tramos){
			Interval in = new Interval(t.getSalida(), t.getLlegada());
			l += in.toDurationMillis();
		}
		
		return l;
	}	
	
	
	
	
	////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////
	
	public Vuelo() {
		this.tramos = new ArrayList<Tramo>();
		this.setEscalas(0);
		this.duracion = (long) 0;
	}

	public Integer getEscalas() {
		return escalas;
	}

	public void setEscalas(Integer escalas) {
		this.escalas = escalas;
	}

	public Long getDuracion() {
		return duracion;
	}

	public void setDuracion(Long duracion) {
		this.duracion = duracion;
	}

	
	////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////
}
